from django.db import models


class Fish(models.Model):
    # 钓鱼规则表
    user_ip = models.CharField(max_length=15)  # 匹配客户ip，使用通配符'*'可以匹配所有ip
    api_path = models.CharField(max_length=100)  # 匹配API
    pre_pycode = models.TextField(
        "参数匹配代码 True or False",
        default="""# _*_ coding:utf-8 _*_
def param_filter(querystring,params):
    # 根据需要，可以使用querystring和params参数，进行过滤，返回Trur or False，决定是否需要使用mock
    # querystring 格式为字符串，eg.name="Milton"&age=18
    # params 格式（一般）为字典，eg.{"name":"Milton","age":18}
    # Create your filter code  here,return True or False
    return True                                
    """,
        null=False)  # 动态脚本来增强参数匹配：有些服务所有接口都是一个api path，是通过参数来匹配的
    mock_pycode = models.TextField(
        "mocker响应处理代码",
        default="""# _*_ coding:utf-8 _*_
def mock_resp(querystring,params):
    # 根据需要，可以获得querystring和params参数，进行逻辑处理，生成mocke响应内容
    # querystring 格式为字符串，eg.name="Milton"&age=18
    # params 格式（一般）为字典，eg.{"name":"Milton","age":18}
    # Create your mock code  here
    return {"key":"value"}
        """,
        null=False)  # mocker响应处理代码
    target_host = models.CharField(max_length=100)  # 转发域名

    def __str__(self):
        return self.api_path

class Cache(models.Model):
    # 缓存表
    timestamp = models.CharField(max_length=80)  # 时间戳
    name = models.CharField(max_length=150)  # 文件名对应的url
    content_type = models.CharField(max_length=50)  # 内容类型
    content = models.TextField()  # 内容


class Record(models.Model):
    # 调用记录表
    method = models.CharField(max_length=80)  # 调用方法
    url = models.CharField(max_length=1024)  # url
    params = models.TextField()  # 请求参数
    resp_type = models.CharField(max_length=80)  # 响应类型，mock/redirect
    content_type = models.CharField(max_length=50)  # 响应内容类型
    content = models.TextField()  # 响应内容
    create_time = models.DateTimeField('创建时间', auto_now_add=True)
    update_time = models.DateTimeField('更新时间', auto_now=True)

    def __str__(self):
        return self.url
